第6课:基本的温室模型¶
1. 单层大气¶
我们将首先尝试在最简单的温室模型中量化温室效应:一层能够吸收和发射长波辐射的大气层。
In [1]:
from IPython.display import Image
Image('./image/MarshallPlumbFig2.6.png')
Out[1]:
图为Marshall and Plumb(2008):大气,海洋和气候动力学
假设¶
- 大气层是温度为
的单层空气 - 大气对于太阳辐射短波是完全透明的。
- 大气对红外辐射是完全不透明的
- 表面和大气都以黑体的形式发射辐射
- 大气辐射向上和向下等量(
) - 没有其他的传热机制
我们现在可以使用能量平衡的概念来探讨为了平衡表面和大气中的能量收支(即辐射平衡温度)需要什么温度。
求解表面温度的辐射平衡¶
现在将其插入表面方程中进行查找

并使用发射温度
的定义来写

事实上,在这个模型中,
与大气温度
是相同的,因为所有的OLR都来自这个层。
求解表面温度:

放入观测数字,
给出了一个表面温度

这种模式是更接近现实的一小步:表面比大气温暖,大气中产生的空气排放,从下面加热的气体,有助于保持表面温暖。
但我们的模型现在高估了表面温度约
(或K)。
为什么?
基本上我们只需要阅读我们上面的假设列表,并认识到它们都不是很好的近似值:
- 大气吸收一些太阳辐射。
- 大气不是长波辐射的完美吸收体
- 吸收和发射随波长变化很大(大气不像黑体一样)。
- 排放量不是由单一温度
决定的,而是由空气温度的详细垂直剖面决定的。 - 能量通过各种动力学传输机制(例如对流和边界层湍流)在垂直方向重新分布。
2. 引入双层温室¶
让我们简单地概括一下上面的模型来构建一个比较现实的长波辐射传输模型。
我们将解决单层模型的两个缺点:
- 没有垂直结构
- 100%的长波不透明
放宽这两个假设给了我们一个非常有用的原型模型,以理解温室效应如何工作。
假设¶
- 大气对短波辐射是透明的(仍然)
- 将大气分成两层相等的质量(因此分界线在500 hPa的压力水平)
- 无论长波辐射入射到哪一层,每层都只吸收一部分
。 - 我们将这个分数
称为层的吸收率。 - 假设
在每一层都是相同的
请注意,最后一个假设是合适的,吸收实际上是由在大气中混合良好的气体进行的。
在我们最重要的两个吸收体中:
混合良好- 由于饱和蒸汽压力的强烈温度依赖性,
并不混合良好(大多局限于对流层下层)。
但是现在我们会忽略现实的这个方面。
为了建立我们的模型,我们需要引入另外一个叫做基尔霍夫定律的物理学:

所以如果一层温度为
的大气层吸收入射长波辐射的分数
,它必须发射出去

上下。
两层大气中的辐射通量¶
In [2]:
Image('./image/2layerAtm_sketch.png', retina=True)
Out[2]:
- 表面温度是

- 大气温度是
,
,其中
最接近表面。 - 大气层的吸收率是

- 地面辐射是

- 大气发射是
,
(上和下) - 吸收率=大气层的发射率
- 长波束的分数(1-
)透过各层
短波辐射¶
由于我们假定大气对短波是透明的,所以入射光束
从顶部到表面不变,其中
部分向上反射到空间。
向上光束¶
让
为长波辐射的向上通量。
从表面到第0层的向上通量是

(只是表面的排放)。
在此波束向上之后,我们可以将从第0层到第1层的向上通量写为来自第0层以下的发射分量和来自第0层的新发射的总和:

继续遵循相同的波束,层1上的向上通量是

由于第一层以上没有更多的大气,这个向上通量是我们这个模型的外出长波辐射:

请注意,OLR中的三项表示从三层中的每层起始对总OLR的贡献。
向下光束¶
让
是下行长波束。由于没有从太空进入的长波辐射,我们从

开始
在层1和层0之间,光束包含来自层1的发射:

(一般来说,如果我们正在处理一个非零的
,我们可以写
)
最后在层0和表面之间,光束包含一个透射分量和层0的发射:

这个
就是我们所说的背辐射,即从大气到地表的长波辐射。
3. 温室模式转向观测¶
在建立我们的新模型中,我们已经引入了一个参数,吸收率
。我们需要为
选择一个值。
我们将调整我们的模型,以便在给定观测到的全球平均温度下再现观测到的全球平均OLR。
为了得到
,
,
的近似温度,让我们再回顾一下上次讲座的从NCEP再分析数据得到的全球年平均递减率图。
温度¶
首先,我们设

根据递减率曲线,1000到500 hPa之间的平均温度是

定义500到0 hPa之间层的平均温度更为模糊,因为在对流层顶时,经历了递减率的逆转。我们会选择

从图中可以看出,这与275hPa或大约10km的观测到的全球平均温度大致相当。
求解
¶
我们在上面的模型中写下OLR的表达式作为温度和吸收率的函数。我们只需要将其与观测值相等并求解
的二次方程即可。
我们将使用名为sympy的符号数学包来帮助我们。
In [4]:
import sympy
sympy.init_printing()
epsilon, T_s, T_0, T_1, sigma = sympy.symbols('epsilon, T_s, T_0, T_1, sigma')
# Define the contributions to OLR originating from each level
OLR_s = (1-epsilon)**2 *sigma*T_s**4
OLR_0 = epsilon*(1-epsilon)*sigma*T_0**4
OLR_1 = epsilon*sigma*T_1**4
OLR = OLR_s + OLR_0 + OLR_1
print('The expression for OLR is')
OLR
The expression for OLR is
Out[4]:

在我们感兴趣的数值中取代:
In [5]:
OLR2 = OLR.subs([(sigma, 5.67E-8), (T_s, 288.), (T_0, 275.), (T_1, 230.)])
OLR2
Out[5]:

现在使用sympy.solve函数求解
的二次方程
In [6]:
sympy.solve(OLR2 - 239., epsilon)
Out[6]:
![$$\left [ 0.58377085032041, \quad 3.93287132168519\right ]$$](_images/math/db1d7b4b01eca9c1b152d89c16f091eea661667b.png)
有两个根,但第二个是非物理的,因为我们必须有
。
我们得出结论,我们的调整值是

这是吸收率,保证我们的模型再现给定观测到的温度的观测OLR。
4. 发射层¶
即使在这个非常简单的温室模型中,OLR的产生也没有单一层。
OLR公式中的三项告诉我们每层的贡献。
让我们创建这三项的一个行向量:
In [7]:
OLRterms = sympy.transpose(sympy.Matrix([OLR_s, OLR_0, OLR_1]))
OLRterms
Out[7]:
![$$\left[\begin{matrix}T_{s}^{4} \sigma \left(- \epsilon + 1\right)^{2} & T_{0}^{4} \epsilon \sigma \left(- \epsilon + 1\right) & T_{1}^{4} \epsilon \sigma\end{matrix}\right]$$](_images/math/c63e5559a986c47ef1d8403f4fc4a78338b19395.png)
现在评估这些表达式的调整温度和吸收率:
In [8]:
tuned = [(T_s, 288), (T_0, 275), (T_1, 230), (epsilon, 0.58), (sigma, 5.67E-8)]
OLRtuned = OLRterms.subs(tuned)
OLRtuned
Out[8]:
![$$\left[\begin{matrix}68.8100052094157 & 78.993456609375 & 92.02851126\end{matrix}\right]$$](_images/math/d84a38cc40e7ed5eca469b0d4c9f0d1ffffe85f0.png)
所以我们从地面上获得了大约
,从0层获得了
,从顶层获得了
。
就总OLR的分数贡献而言,我们有(将输出限制在小数点后两位):
In [9]:
sympy.N(OLRtuned / 239., 2)
Out[9]:
![$$\left[\begin{matrix}0.29 & 0.33 & 0.39\end{matrix}\right]$$](_images/math/76cd87101fcd75f1644cda931d64654070705d93.png)
请注意,最大的单一贡献来自顶层。尽管这层的排放量很弱,因为它太冷了。
与观测结果相比,地面实际对OLR的贡献约为
(约占总数的9%),而不是
。所以我们当然还没有完成所有的细节!
正如我们后面将会看到的,为了真正理解观测
的那些集合,我们将需要开始考虑长波吸收的光谱依赖性。
5. 两层温室里的辐射强迫¶
添加一些额外的温室吸收剂将意味着在每一层吸收大部分入射的长波辐射。
因此
必须随着温室气体的增加而增加。
假设我们最初有εε,吸收率增加到
。
进一步假设这种增加是突然发生的,所以没有时间来响应这个变化。我们保持列中的温度固定,并考虑辐射通量如何改变。
你期望OLR增加还是减少?
让我们使用我们的双层泄漏温室模型来调查答案。
在扰动之前的OLR的组成部分
In [10]:
OLRterms
Out[10]:
![$$\left[\begin{matrix}T_{s}^{4} \sigma \left(- \epsilon + 1\right)^{2} & T_{0}^{4} \epsilon \sigma \left(- \epsilon + 1\right) & T_{1}^{4} \epsilon \sigma\end{matrix}\right]$$](_images/math/c63e5559a986c47ef1d8403f4fc4a78338b19395.png)
扰动后我们有
In [12]:
delta_epsilon = sympy.symbols('delta_epsilon')
OLRterms_pert = OLRterms.subs(epsilon, epsilon+delta_epsilon)
OLRterms_pert
Out[12]:
![$$\left[\begin{matrix}T_{s}^{4} \sigma \left(- \delta_{\epsilon} - \epsilon + 1\right)^{2} & T_{0}^{4} \sigma \left(\delta_{\epsilon} + \epsilon\right) \left(- \delta_{\epsilon} - \epsilon + 1\right) & T_{1}^{4} \sigma \left(\delta_{\epsilon} + \epsilon\right)\end{matrix}\right]$$](_images/math/07a44735c10dbb0820cd942126d5e126ca8eacc6.png)
取差值
In [16]:
deltaOLR = OLRterms_pert - OLRterms
deltaOLR
Out[16]:
![$$\left[\begin{matrix}- T_{s}^{4} \sigma \left(- \epsilon + 1\right)^{2} + T_{s}^{4} \sigma \left(- \delta_{\epsilon} - \epsilon + 1\right)^{2} & - T_{0}^{4} \epsilon \sigma \left(- \epsilon + 1\right) + T_{0}^{4} \sigma \left(\delta_{\epsilon} + \epsilon\right) \left(- \delta_{\epsilon} - \epsilon + 1\right) & - T_{1}^{4} \epsilon \sigma + T_{1}^{4} \sigma \left(\delta_{\epsilon} + \epsilon\right)\end{matrix}\right]$$](_images/math/c9fd4d363df72ad9b7bc5d46942eec19715d6f89.png)
为了使事情更简单,我们将忽略
中的项。这是完全合理的,因为我们正在处理
的小扰动。
告诉sympy设置二次项为零给我们
In [17]:
deltaOLR_linear = sympy.expand(deltaOLR).subs(delta_epsilon**2, 0)
deltaOLR_linear
Out[17]:
![$$\left[\begin{matrix}2 T_{s}^{4} \delta_{\epsilon} \epsilon \sigma - 2 T_{s}^{4} \delta_{\epsilon} \sigma & - 2 T_{0}^{4} \delta_{\epsilon} \epsilon \sigma + T_{0}^{4} \delta_{\epsilon} \sigma & T_{1}^{4} \delta_{\epsilon} \sigma\end{matrix}\right]$$](_images/math/a09c26aed47a67b1b31169c6e25a03d7f46581ff.png)
回想一下,这三项是从三个不同层对OLR的贡献。在这种情况下,增加更多的吸收后,这些贡献的变化。
现在让我们除以
得到OLR每单位吸光度变化的标准化变化:
In [18]:
deltaOLR_per_deltaepsilon = sympy.simplify(deltaOLR_linear / delta_epsilon)
deltaOLR_per_deltaepsilon
Out[18]:
![$$\left[\begin{matrix}2 T_{s}^{4} \sigma \left(\epsilon - 1\right) & T_{0}^{4} \sigma \left(- 2 \epsilon + 1\right) & T_{1}^{4} \sigma\end{matrix}\right]$$](_images/math/f7d6f191a828c20cdd9f8e5dc4ee5e151e224382.png)
现在看看每一项的符号。回想
。
OLR中的哪几项上升,哪些下降?
这是非常重要的,所以停下来想想看。
来自地表的贡献必须减少,而来自顶层的贡献必须增加。
当我们添加吸收体时,平均排放水平会上升!
“辐射强迫”是加入吸收体后TOA辐射通量的变化
在这个模型中,只有长波通量可以改变,所以我们将辐射强迫定义为

(带有负号,这样当气候系统获得额外的能量时,
是正的)。
我们只是想出了,当我们增加一些额外的吸收器时,空间(平均)的排放量将来自大气中更高层。
这对OLR意味着什么?会增加还是减少?
为了得到答案,我们只需要总结我们上面写的三个贡献:
In [19]:
R = -sum(deltaOLR_per_deltaepsilon)
R
Out[19]:

这是一个正数还是负数?关键是这样的:
这取决于温度,即取决于失效率。
温室效应等温大气
停下来思考这个问题:
如果表面和大气都处于相同的温度,那么当
增加(即,我们增加更多的吸收体)时,OLR是上升还是下降?
理解这个问题是理解温室效应如何工作的关键。
让我们解决等温情况
我们将在上面的表达式中设置
。
In [20]:
R.subs([(T_0, T_s), (T_1, T_s)])
Out[20]:

然后简化为
In [21]:
sympy.simplify(R.subs([(T_0, T_s), (T_1, T_s)]))
Out[21]:

答案是零
对于一个等温大气,当我们添加额外的温室吸收剂时,OLR没有变化。因此,没有辐射强迫,也没有温室效应。
为什么?
排放水平还是要上去的。但由于上层的温度与其他地方的温度相同,排放量是完全一样的。
辐射强迫(OLR的变化)取决于失效率!
对于由于温室吸收器增加而产生的辐射强迫的更现实的例子,我们可以用我们的调整值代替温度和εε。
我们用
表示
增加1%的答案。
OLR变化的三个组成部分是
In [22]:
deltaOLR_per_deltaepsilon.subs(tuned) * 0.01
Out[22]:
![$$\left[\begin{matrix}-3.27666691473408 & -0.5188404375 & 1.58669847\end{matrix}\right]$$](_images/math/de44a82d406475cb9b6f1b9d84f4708d2cdfe92e.png)
净辐射强迫为
In [23]:
R.subs(tuned) * 0.01
Out[23]:

所以在我们的例子中,OLR降低了:math:`2.2 W m^{-2}`,或者相当于辐射强迫为
。
我们刚刚计算的是这样的:
考虑到观测到的失效率,吸收剂的小幅增加将导致OLR的小幅下降。
因此,温室效应变得越来越强烈,能量将开始在系统中积累 - 随着系统调整到一个新的平衡,这最终将导致温度上升。
6. 两层温室里的辐射平衡¶
在上一节中,我们没有对实际设定温度的过程做任何假设。给定观测温度,我们使用该模型计算辐射通量。我们强调知道排放率的重要性,以便知道排放水平的增加如何影响OLR,从而决定辐射强迫。
因此,气候动态的一个关键问题是:
什么设定了失效率?
事实证明,许多不同的物理过程有助于设定失效率。了解这些过程如何一起行动,以及随着气候变化如何变化,是我们需要更复杂的气候模式的关键原因之一。
现在,我们将使用我们的原型温室模型来进行最基本的延迟率计算:辐射平衡温度。
我们假设
- 层之间唯一的能量交换是长波辐射
- 当每层的净辐射通量收敛为零时达到平衡。
In [25]:
E_s = sigma*T_s**4
E_0 = epsilon*sigma*T_0**4
E_1 = epsilon*sigma*T_1**4
E = sympy.Matrix([E_s, E_0, E_1])
E
Out[25]:
![$$\left[\begin{matrix}T_{s}^{4} \sigma\\T_{0}^{4} \epsilon \sigma\\T_{1}^{4} \epsilon \sigma\end{matrix}\right]$$](_images/math/fa6d394cea2835be0bcd6864437ab63780c878e7.png)
向上光束
In [26]:
U = sympy.Matrix([E_s, (1-epsilon)*E_s + E_0, (1-epsilon)*((1-epsilon)*E_s + E_0) + E_1])
U
Out[26]:
![$$\left[\begin{matrix}T_{s}^{4} \sigma\\T_{0}^{4} \epsilon \sigma + T_{s}^{4} \sigma \left(- \epsilon + 1\right)\\T_{1}^{4} \epsilon \sigma + \left(- \epsilon + 1\right) \left(T_{0}^{4} \epsilon \sigma + T_{s}^{4} \sigma \left(- \epsilon + 1\right)\right)\end{matrix}\right]$$](_images/math/8014adea819c45e980192dea9f4586884cd3d8ed.png)
向下光束
In [27]:
fromspace = 0
D = sympy.Matrix([(1-epsilon)*((1-epsilon)*fromspace + E_1) + E_0, (1-epsilon)*fromspace + E_1, fromspace])
D
Out[27]:
![$$\left[\begin{matrix}T_{0}^{4} \epsilon \sigma + T_{1}^{4} \epsilon \sigma \left(- \epsilon + 1\right)\\T_{1}^{4} \epsilon \sigma\\0\end{matrix}\right]$$](_images/math/b8605b904e1041c509f51a3b179190b803eac9d8.png)
In [28]:
# Net flux, positive up
F = sympy.simplify(U - D)
F
Out[28]:
![$$\left[\begin{matrix}\sigma \left(- T_{0}^{4} \epsilon + T_{1}^{4} \epsilon \left(\epsilon - 1\right) + T_{s}^{4}\right)\\\sigma \left(T_{0}^{4} \epsilon - T_{1}^{4} \epsilon - T_{s}^{4} \left(\epsilon - 1\right)\right)\\\sigma \left(T_{1}^{4} \epsilon - \left(\epsilon - 1\right) \left(T_{0}^{4} \epsilon - T_{s}^{4} \left(\epsilon - 1\right)\right)\right)\end{matrix}\right]$$](_images/math/f0a76c71088685f2d850fb0406a313cc79103007.png)
In [29]:
# The absorption is then simply the flux convergence in each layer
# define a vector of absorbed radiation -- same size as emissions
A = E.copy()
# absorbed radiation at surface
A[0] = F[0]
# Get the convergence
for n in range(2):
A[n+1] = -(F[n+1]-F[n])
A = sympy.simplify(A)
A
Out[29]:
![$$\left[\begin{matrix}\sigma \left(- T_{0}^{4} \epsilon + T_{1}^{4} \epsilon \left(\epsilon - 1\right) + T_{s}^{4}\right)\\\epsilon \sigma \left(- 2 T_{0}^{4} + T_{1}^{4} \epsilon + T_{s}^{4}\right)\\\epsilon \sigma \left(T_{0}^{4} \epsilon - 2 T_{1}^{4} - T_{s}^{4} \epsilon + T_{s}^{4}\right)\end{matrix}\right]$$](_images/math/7451d046a313ec9c28a17e30a1ca011e2a26d7a2.png)
In [30]:
# Solve for radiative equilibrium by setting this equal to zero
T_e = sympy.symbols('T_e')
sympy.solve(A - sympy.Matrix([sigma*T_e**4, 0, 0]),[T_s**4, T_1**4, T_0**4])
Out[30]:

因此辐射平衡解

有

比较我们从观测的递减率导出的值

辐射平衡的解在地表温度较高,而在对流层低层则比实际情况低。
这是辐射平衡的一个非常普遍的特征,我们很快就会在这个过程中看到它。



。
和
对上升和下降的光束都有贡献。